로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
2 요약정리 | ✅ 저자: 이유정(박사)
🕸️ BeautifulSoup 기반 웹 크롤링 예제 (CGV 영화)
🧰 설치 명령어
pip install beautifulsoup4
pip install lxml
pip list # 설치 확인
※ beautifulsoup4
는 HTML 파서를 포함하지 않으므로 lxml
또는 html5lib
를 함께 설치해야 합니다.
🔍 CGV 영화 목록 크롤링 예시
import requests
from bs4 import BeautifulSoup
def get_cgv_movies():
url = "http://www.cgv.co.kr/movies/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"
}
resp = requests.get(url, headers=headers)
resp.raise_for_status()
soup = BeautifulSoup(resp.text, "html.parser")
chart_box = soup.select("div.sect-movie-chart ol li")
result = []
for movie in chart_box:
title_tag = movie.select_one("strong.title")
percent_tag = movie.select_one("strong.percent span")
release_tag = movie.select_one("span.txt-info")
img_tag = movie.select_one("img")
if title_tag:
result.append({
"title": title_tag.text.strip(),
"reserve_percent": percent_tag.text.strip() if percent_tag else None,
"release_date": release_tag.text.strip() if release_tag else None,
"poster": img_tag["src"] if img_tag else None
})
return result
if __name__ == "__main__":
movies = get_cgv_movies()
for i, m in enumerate(movies, 1):
print(f"{i}. {m['title']} ({m['release_date']}) - 예매율: {m['reserve_percent']}")
🧾 주요 파싱 전략
기준 | 설명 및 예시 |
---|---|
태그 이름 | <div>, <span> 등 → soup.find('div') |
클래스(class) | .title , .txt-info 등 → soup.select('.title') |
id 속성 | #main → soup.select('#main') |
위치 기반 탐색 | div > ul > li → soup.select('div.box > ul > li') |
속성값 기준 | href, src 등 → soup.find('a', href=True) |
텍스트 내용 | "CGV" in tag.text 등 |
✨ 메서드 정리
-
find()
/find_all()
: 태그 기반 탐색 -
select()
/select_one()
: CSS 선택자 기반 탐색
▶ 실행 예제
if __name__ == "__main__":
movies = get_cgv_movies()
for i, m in enumerate(movies, 1):
print(f"{i}. {m['title']} ({m['release_date']}) - 예매율: {m['reserve_percent']}")
예상 출력:
1. 쥬라기 월드: 새로운 시작 (2025.07.02 개봉) - 예매율: 32.7%
2. F1 더 무비 (2025.06.25 개봉) - 예매율: 23.3%
3. 노이즈 (2025.06.25 개봉) - 예매율: 6.2%
4. 드래곤 길들이기 (2025.06.06 개봉) - 예매율: 2.0%
5. 엘리오 (2025.06.18 개봉) - 예매율: 1.3%
6. 28년 후 (2025.06.19 개봉) - 예매율: 1.2%
7. 위장수사 (2025.06.27 개봉) - 예매율: 1.1%
8. 바람계곡의 나우시카 (2025.06.25 개봉) - 예매율: 1.0%
9. 바다호랑이 (2025.06.25 개봉) - 예매율: 0.8%
10. 인피니트 15주년 콘서트 리미티드 에디션 더 무비 (2025.06.11 개봉) - 예매율: 0.6%
11. 그림자 군단 (2025.07.02 재개봉) - 예매율: 0.3%
12. 그을린 사랑 (2025.06.25 재개봉) - 예매율: 0.2%
13. 퀴어 (2025.06.20 개봉) - 예매율: 0.2%
14. 미션 임파서블: 파이널 레코닝 (2025.05.17 개봉) - 예매율: 0.2%
15. 하이파이브 (2025.05.30 개봉) - 예매율: 0.2%
16. 해피엔드 (2025.04.30 개봉) - 예매율: 0.2%
17. 인생은 아름다워 (2025.06.11 재개봉) - 예매율: 0.2%
18. 사스콰치 선셋 (2025.07.02 개봉) - 예매율: 0.1%
19. 네이키드 런치 (2025.06.25 개봉) - 예매율: 0.1%